#include "Key.h"
#include "stm32f10x.h"                  // Device header
#include "Delay.h"

uint8_t Key_Num_1;

void Key_Init(void)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
	
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOB, &GPIO_InitStructure);
}



uint8_t Key_GetNum(void)
{
  uint8_t Temp;
 if(Key_Num_1)
 {
	 Temp = Key_Num_1;
	 Key_Num_1 = 0;
	 return Temp;
 }	 
 return 0;
}

uint8_t Key_GetState(void)
{
	if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_9) == KEY_LOW)
	{
		return KEY_NUM_ONE;
	}
	if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_8) == KEY_LOW)
	{
		return 2;
	}
	if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_7) == KEY_LOW)
	{
		return 3;
	}		
	if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_4) == KEY_LOW)
	{
		return 4;
	}
	
	return 0;
}

void Key_Tick(void)
{
	static uint8_t Count;
	static uint8_t CurrState,PrevState;
	Count ++;
	
	if(Count >= 1)
	{
	  Count = 0;
		PrevState = CurrState;
		CurrState = Key_GetState();
		
	}
	if(CurrState == 0 && PrevState != 0) 
	{
	  Key_Num_1 = PrevState;
	}
	
}






